package com.shujia.day15.udp.image;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.Arrays;

public class Server {
    public static void main(String[] args) throws IOException {
        /*
            TODO: 对于Server端来说，需要通过 开放本地的 8888 端口获取数据
         */
        /*
            DatagramSocket(int port) 可以直接给定一个端口
                port => 表示服务端启动一个端口  类似于Mysql服务启动了 3306 端口用于接收用户的操作信息
         */
        DatagramSocket datagramSocket = new DatagramSocket(8888);
        // TODO 将数据写入到本地文件系统中 ？
        FileOutputStream fileOutputStream = new FileOutputStream("data/receive.jpg");
        System.out.println("Socket启动了...");
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
        int readLen = 0;
        datagramSocket.receive(datagramPacket); // 阻塞
        System.out.println("接收到数据了...");
        while ((readLen = datagramPacket.getLength()) > 0) {
            byte[] receiveData = datagramPacket.getData();
            fileOutputStream.write(receiveData, 0, readLen);
            // 再进行一次数据接收 再判断数据的长度 按长度判断是否需要进入循环
            datagramSocket.receive(datagramPacket);
        }
        fileOutputStream.close();
        datagramSocket.close();
    }
}
